home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / security / tcp_wrapper.dutch.txt.Z / tcp_wrapper.dutch.txt
Encoding:
Text File  |  1992-04-23  |  31.5 KB  |  925 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.          TCP WRAPPER, een tool voor het bewaken van
  11.                      netwerkactiviteit
  12.  
  13.  
  14.                        Wietse Venema
  15.  
  16.                   Wiskunde en Informatica
  17.              Technische Universiteit Eindhoven
  18.                    wietse@wzv.win.tue.nl
  19.  
  20.  
  21.                           ABSTRACT
  22.  
  23.           Dit verhaal presenteert aan de hand van prak-
  24.      tijkvoorbeelden een aantal netwerkmonitoring tech-
  25.      nieken die ik heb ontwikkeld voor het  vroegtijdig
  26.      detecteren  van verdachte netwerkactiviteiten. Dit
  27.      alles zonder enige aanpassing in  reeds  bestaande
  28.      systeemsoftware  en  configuratiefiles,  en op een
  29.      zodanige manier dat normale gebruikers geen hinder
  30.      ondervinden. Het gereedschap mag zich verheugen in
  31.      een behoorlijke populariteit, en wordt zelfs  aan-
  32.      bevolen door organisaties zoals CERT.
  33.  
  34.  
  35.  
  36. 1.  De jacht op het huisdier.
  37.  
  38. Het verhaal begint een kleine  twee  jaar  geleden  met  een
  39. kraker  die regelmatig op TUE-systemen inbrak en op magische
  40. wijze telkens superuser wist te worden. Dat zou op  zichzelf
  41. nog  niet  een  ramp zijn, maar hij had ook een heel hinder-
  42. lijke voorliefde voor het commando:
  43.  
  44.         rm -rf /
  45.  
  46. Voor niet  UNIX-ingewijden:  dit  heeft  ongeveer  hetzelfde
  47. effect als het format-commando onder MS-DOS. Na zo'n calami-
  48. teit kon met behulp van van backups de directe schade  mees-
  49. tal  hersteld  worden, maar de niet-materiele schade was na-
  50. tuurlijk veel ernstiger. En de backups konden niet voorkomen
  51. dat zo nu en dan iemand toch een grote hoeveelheid werk ver-
  52. loor.
  53.  
  54. Bij gebrek aan 100% waterdichte bewijzen kan  ik  natuurlijk
  55. geen  namen  noemen,  maar  wij  hadden  wel  uiterst sterke
  56. aanwijzingen. In de wandelgangen noemden we de  kraker  "ons
  57. huisdier". Voor insiders moet dit voldoende informatie zijn.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.                        April 24, 1992
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                            - 2 -
  71.  
  72.  
  73. 2.  Door de kraker bespioneerd.
  74.  
  75. Nadat een inbraak was geconstateerd was  het  onmogelijk  om
  76. sporen  te  onderzoeken.  Die  waren  immers  door de rm -rf
  77. acties volledig uitgewist.  Ik ontdekte echter dat de kraker
  78. ons  voortdurend over het netwerk bespioneerde. Hij deed dat
  79. onder andere door verbinding te maken met o.a.  onze  finger
  80. netwerkservice.   Daarmee kon hij zien wie er op de systemen
  81. waren ingelogd. Dat kon hij vrijwel ongemerkt doen omdat dit
  82. soort  netwerkservices  geen  wachtwoorden vereist, en omdat
  83. gewoonlijk niet wordt vastgelegd wie van dit soort  services
  84. gebruik maakt.
  85.  
  86. De voor de hand liggende reactie  zou  zijn  geweest  om  de
  87. finger  en  soortgelijke  netwerkservices af te sluiten. Het
  88. leek me in dit  geval  productiever  om  de  netwerkservices
  89. juist  te  handhaven  en  te  proberen om er achter te komen
  90. vanuit welke systemen de kraker ons zat te bespioneren.
  91.  
  92. 3.   Een  typische  UNIX  TCP/IP   netwerkimplementatie   in
  93. vogelvlucht.
  94.  
  95. Om het probleem en de  gevonden  oplossing  inzichtelijk  te
  96. maken moet ik eerst in het kort samenvatten hoe een typische
  97. UNIX-implementatie  van  de  TCP/IP  netwerkfaciliteiten  is
  98. georganiseerd.  Mensen  die hiermee op de hoogte zijn zullen
  99. het mij hopelijk vergeven dat ik zo hier en daar wat vereen-
  100. voudigingen heb aangebracht.
  101.  
  102. Nagenoeg alle  TCP/IP-toepassingen  zijn  gebaseerd  op  het
  103. client-server model. Bijvoorbeeld, als een gebruiker met het
  104. telnet-commando contact maakt met een host, dan wordt op dat
  105. laatste  systeem  een telnet server gestart die de gebruiker
  106. met een  login  proces  verbindt.  Enkele  voorbeelden  zijn
  107. gegeven in tabel 1.
  108.  
  109.              client   server    toepassing
  110.              __________________________________
  111.              telnet   telnetd   remote login
  112.              ftp      ftpd      file transfer
  113.              finger   fingerd   wie is ingelogd
  114.              systat   systatd   wie is ingelogd
  115.  
  116.  
  117.  
  118.      Tabel 1. Voorbeeld van een aantal TCP/IP  client-server
  119.      combinaties.
  120.  
  121. Net zoals de ftp en telnet gebruikerscommandos meestal  door
  122. verschillende  programma's  worden geimplementeerd, zijn dus
  123. ook de bijbehorende netwerkservers  in  het  algemeen  geim-
  124. plementeerd als aparte programmas.
  125.  
  126. De op dit moment gangbare aanpak is om  slechts  een  daemon
  127. proces   op   binnenkomende   netwerkverbindingen  te  laten
  128.  
  129.  
  130.                        April 24, 1992
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                            - 3 -
  137.  
  138.  
  139. wachten.  Wanneer een verbinding wordt  gemaakt  start  deze
  140. daemon  (gewoonlijk  inetd genaamd) het bijbehorende server-
  141. programma op en gaat vervolgens wachten  op  nieuwe  binnen-
  142. komende verbindingen.
  143.  
  144.  
  145.                                            ---------
  146.             -----------------    (ftp)-----|   i   |
  147.      user---| telnet client |----(telnet)--|   n   |
  148.             -----------------     .        |   e   |
  149.                                   .        |   t   |
  150.                                  (finger)--|   d   |
  151.                                            ---------
  152.  
  153.      Figuur 1.  Het inetd proces luistert naar de ftp,  tel-
  154.      net  etc.   netwerk  poorten  en wacht op binnenkomende
  155.      connecties. In de figuur is aangegeven dat  er  zojuist
  156.      door  een  gebruiker met een telnet clientprogramma een
  157.      verbinding met de telnet poort is gemaakt.
  158.  
  159.                                            ---------
  160.                                  (ftp)-----|   i   |
  161.                                  (telnet)--|   n   |
  162.                                   .        |   e   |
  163.                                   .        |   t   |
  164.                                  (finger)--|   d   |
  165.                                            ---------
  166.  
  167.             -----------------      -----------------    ---------
  168.      user---| telnet client |------| telnet server |----| login |
  169.             -----------------      -----------------    ---------
  170.  
  171.      Figuur 2.  Het inetd proces heeft  een  telnet  server-
  172.      proces  gestart dat de verbinding verder afhandelt; in-
  173.      etd wacht nu op nieuwe  binnenkomende  connecties.  Het
  174.      telnet serverproces verbindt de gebruiker met een login
  175.      proces.
  176.  
  177.  
  178. 4.  De "tcp wrapper" wisseltruuk.
  179.  
  180. Om de naam te achterhalen van de host van waaruit de  kraker
  181. ons  bespioneerde  zou dus aanpassing van de netwerksoftware
  182. vereist zijn.  Op het eerste gezicht waren de vooruitzichten
  183. niet zo gunstig:
  184.  
  185. o    De TUE had geen licentie voor de  source  code  van  de
  186.      UNIX-versies  die  op onze systemen werden gebruikt. De
  187.      source code zelf hadden we overigens ook niet.
  188.  
  189. o    De Berkeley netwerk source code,  waarvan  uiteindelijk
  190.      alle  UNIX  netwerk software is afgeleid, was weliswaar
  191.      beschikbaar, maar het  zou  een  onbekende  hoeveelheid
  192.      werk  kosten  om  die  geschikt te maken voor onze UNIX
  193.  
  194.  
  195.  
  196.                        April 24, 1992
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                            - 4 -
  203.  
  204.  
  205.      systemen. Leveranciers plegen onder het mom  van  "ver-
  206.      beteringen" allelei obscure wijzigen aan te brengen.
  207.  
  208. Gelukkig kon ik volstaan met een oplossing die  geen  enkele
  209. wijziging  in  systeemsoftware vereiste, en die bovendien op
  210. al onze UNIX systemen bleek te  werken.  Daartoe  maakte  ik
  211. gebruik  van  een  eenvoudige wisseltruuk:  installeer op de
  212. plaats van elk network serverprogramma een triviaal program-
  213. maatje,  en  verplaats de originele network servers naar een
  214. andere directory.   Wanneer  nu  een  verbinding  binnenkomt
  215. start  het  inetd  proces  het  triviale programmaatje op in
  216. plaats van de echte netwerkserver.   Het  triviale  program-
  217. maatje  logt  de naam van de remote host en start vervolgens
  218. het echte serverprogramma op.
  219.  
  220. Zo konden we de netwerkactiviteit in de gaten houden terwijl
  221. er geen enkele systeemsoftware of configuratiefile hoefde te
  222. worden aangepast.
  223.  
  224.  
  225.                                            ---------
  226.                                  (ftp)-----|   i   |
  227.                                  (telnet)--|   n   |
  228.                                   .        |   e   |
  229.                                   .        |   t   |
  230.                                  (finger)--|   d   |
  231.                                            ---------
  232.  
  233.             -----------------      -----------------
  234.      user---| telnet client |------|  tcp wrapper  |---> logfile
  235.             -----------------      -----------------
  236.  
  237.      Figuur 3.  Op de plaats van de  oorspronkelijke  telnet
  238.      server  is het tcp wrapper programma geinstalleerd. Dit
  239.      programma logt de naam van de remote host naar een log-
  240.      file.
  241.  
  242.             -----------------      -----------------    ---------
  243.      user---| telnet client |------| telnet server |----| login |
  244.             -----------------      -----------------    ---------
  245.  
  246.      Figuur 3.  Figuur 4.  Het tcp wrapper  programma  heeft
  247.      de  echte  telnet server gestart en doet nu verder niet
  248.      meer mee.  Vanuit de  gebruiker  gezien  is  dus  niets
  249.      veranderd.
  250.  
  251.  
  252. De eerste versie van de tcp wrapper bestond uit slechts  een
  253. paar  regeltjes  code  die ik zorgvuldig had overgenomen uit
  254. een bestaande netwerk  daemon  source.  En  omdat  het  geen
  255. enkele  informatie  uitwisselde met het remote clientproces,
  256. kon dezelfde tcp wrapper versie worden gebruikt voor  aller-
  257. lei verschillende netwerkservices.
  258.  
  259.  
  260.  
  261.  
  262.                        April 24, 1992
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                            - 5 -
  269.  
  270.  
  271. Ondanks het feit dat ik de tcp wrapper op slechts een dozijn
  272. systemen kon installeren was het meteen een succes. Figuur 5
  273. geeft een voorbeeld.
  274.  
  275.  
  276.      May 21 14:06:53 tuegate: systatd: connect from monk.rutgers.edu
  277.      May 21 16:08:45 tuegate: systatd: connect from monk.rutgers.edu
  278.      May 21 16:13:58 trf.urc: systatd: connect from monk.rutgers.edu
  279.      May 21 18:38:17 tuegate: systatd: connect from ap1.eeb.ele.tue.nl
  280.      May 21 23:41:12 tuegate: systatd: connect from mcl2.utcs.utoronto.ca
  281.      May 21 23:48:14 tuegate: systatd: connect from monk.rutgers.edu
  282.  
  283.      May 22 01:08:28 tuegate: systatd: connect from HAWAII-EMH1.PACOM.MIL
  284.      May 22 01:14:46 tuewsd:  fingerd: connect from HAWAII-EMH1.PACOM.MIL
  285.      May 22 01:15:32 tuewso:  fingerd: connect from HAWAII-EMH1.PACOM.MIL
  286.      May 22 01:55:46 tuegate: systatd: connect from monk.rutgers.edu
  287.      May 22 01:58:33 tuegate: systatd: connect from monk.rutgers.edu
  288.      May 22 02:00:14 tuewsd:  fingerd: connect from monk.rutgers.edu
  289.      May 22 02:14:51 tuegate: systatd: connect from RICHARKF-TCACCIS.ARMY.MIL
  290.      May 22 02:19:45 tuewsd:  fingerd: connect from RICHARKF-TCACCIS.ARMY.MIL
  291.      May 22 02:20:24 tuewso:  fingerd: connect from RICHARKF-TCACCIS.ARMY.MIL
  292.  
  293.      May 22 14:43:29 tuegate: systatd: connect from monk.rutgers.edu
  294.      May 22 15:08:30 tuegate: systatd: connect from monk.rutgers.edu
  295.      May 22 15:09:19 tuewse:  fingerd: connect from monk.rutgers.edu
  296.      May 22 15:14:27 tuegate: telnetd: connect from cumbic.bmb.columbia.edu
  297.      May 22 15:23:06 tuegate: systatd: connect from cumbic.bmb.columbia.edu
  298.      May 22 15:23:56 tuewse:  fingerd: connect from cumbic.bmb.columbia.edu
  299.  
  300.      Figuur 5.  Enkele van de de  eerste  kraker  connecties
  301.      die  door de tcp wrapper werden waargenomen.  Elke con-
  302.      nectie is gelogd met:  tijdstip,  naam  van  de  locale
  303.      host,  de  gevraagde  service, en de naam van de remote
  304.      host.  Hieruit blijkt dat de kraker niet alleen gebruik
  305.      maakte  van  terminal servers (zoals monk.rutgers.edu),
  306.      maar ook dat hij toegang  had  tot  allerlei  militaire
  307.      (.MIL) en universitaire (.EDU) systemen.
  308.  
  309.  
  310. De kraker maakte veelvuldig gebruik van de systat en  finger
  311. services.   Daarmee  kon hij zien zien wie er op een systeem
  312. waren ingelogd. Verder maakte de kraker zo  nu  en  dan  een
  313. telnet verbinding. Vermoedelijk om na een enkele inlogpoging
  314. meteen de verbinding te verbreken, zodat er  geen  "repeated
  315. login  failure"  boodschap  op  de  systeemconsole  zou ver-
  316. schijnen.
  317.  
  318. Terwijl de kraker dacht ons ongemerkt te bespioneren  konden
  319. we vanaf nu dus precies zien waar hij bezig was. Dit was een
  320. hele vooruitgang vergeleken met vroeger,  toen  we  pas  wat
  321. merkten  als het te laat was, namelijk als hij weer eens een
  322. rm -rf had gedaan.
  323.  
  324. Aanvankelijk was mijn vrees dat we  bedolven  zouden  worden
  325.  
  326.  
  327.  
  328.                        April 24, 1992
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                            - 6 -
  335.  
  336.  
  337. onder de logs, en dat we tussen alle ruis de gewenste infor-
  338. matie niet zouden kunnen vinden.  Gelukkig  bleek  het  vrij
  339. eenvoudig om de kraker te herkennen:
  340.  
  341. o    Hij was vaak in de  nacht  actief,  wanneer  er  weinig
  342.      andere activiteit is.
  343.  
  344. o    Hij maakte altijd in betrekkelijk korte tijd een aantal
  345.      connecties  naar verschillende systemen op de TUE. Door
  346.      zijn activiteit te spreiden over verschillende systemen
  347.      dacht hij misschien minder op te vallen.
  348.  
  349. o    Omdat ik de logfiles van verschillende systemen  samen-
  350.      voegde  was  het  juist  extra  gemakkelijk  om te zien
  351.      wanneer de kraker in de lucht was.
  352.  
  353. o    Niemand anders gebruikte de systat service.
  354.  
  355. De activiteiten van de kraker staken dus  ruimschoots  boven
  356. de "ruis" uit.
  357.  
  358. In het bovenstaande voorbeeld is een van de  systat  connec-
  359. ties    afkomstig   van   een   systeem   binnen   de   TUE:
  360. ap1.eeb.ele.tue.nl, dat  deel  uitmaakt  van  een  ring  van
  361. Apollo  workstations.   Aangezien de kraker de enige was die
  362. van de systat service gebruik maakte was het  duidelijk  dat
  363. hij  nog  steeds op de TUE actief was. Ik heb dan ook onmid-
  364. delijk de beheerder gewaarschuwd.  Helaas  was  deze  moeite
  365. voor niets:  een week later werden alle disks van die Apollo
  366. ring gewist.  Aangezien de  laatste  backup  ruim  anderhalf
  367. jaar oud was was de schade aanzienlijk.
  368.  
  369. 5.  Open terminalservers considered harmful.
  370.  
  371. Zoals uit het voorbeeld blijkt, opereerde  de  kraker  graag
  372. vanaf  open terminalservers. Dit soort systemen is niet voor
  373. niets populair bij krakers.  Als  je  een  normale  usercode
  374. gebruikt  om  op  een ander systeem in te breken ben je vrij
  375. eenvoudig te  achterhalen.  De  meeste  multi-user  systemen
  376. houden immers logfiles bij met login tijden en andere infor-
  377. matie. Door de logs op het gekraakte systeem te  vergelijken
  378. met  de  logs  van  het  systeem van waaruit de inbraak werd
  379. gepleegd kun je er meestal vrij snel achter komen  om  welke
  380. usercodes het gaat.
  381.  
  382. In het geval van open terminalservers ben je veel moeilijker
  383. te achterhalen.
  384.  
  385. o    Terminalservers vereisen zelden een wachtwoord.
  386.  
  387. o    Terminalservers zijn vaak direct bereikbaar vanuit  het
  388.      openbare telefoon netwerk.
  389.  
  390. o    Terminalservers  kunnen  vaak  als  springplank  worden
  391.  
  392.  
  393.  
  394.                        April 24, 1992
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                            - 7 -
  401.  
  402.  
  403.      gebruikt om van het ene systeem naar het andere over te
  404.      springen, zodat de oorspronkelijke hostnaam niet in  de
  405.      loginaccounting te zien is.
  406.  
  407. o    Terminalservers houden geen logfiles bij, zodat je niet
  408.      kunt nagaan waarvoor ze zijn gebruikt.
  409.  
  410. Kortom, terminalservers met wereldwijde internet access zijn
  411. ideaal  omdat je in volstrekte anonimiteit kunt opereren. In
  412. feite zijn terminalservers nog erger dan reguliere computer-
  413. systemen met slechte wachtwoorden, omdat de laatse tenminste
  414. nog enige loginaccounting bijhouden en omdat accounts kunnen
  415. worden afgesloten.
  416.  
  417. Ik zou een lange tirade kunnen houden over de  bezwaren  van
  418. publiek  toegankelijke terminalservers met wereldwijd inter-
  419. net access. In het kort komt het hierop neer: in  geval  van
  420. inbraken  vanuit  een persoonlijke usercode op een reguliere
  421. host kan de  betreffende  user  code  worden  opgespoord  en
  422. afgesloten;  in  het geval van inbraken vanuit een terminal-
  423. server is dat niet mogelijk. Mijn advies is dan ook om  ter-
  424. minalservers te blokkeren voor interlocaal verkeer, zodat ze
  425. door krakers niet als uitvalsbasis kunnen worden gebruikt.
  426.  
  427. 6.  Eerste uitbreiding: access control.
  428.  
  429. Het is duidelijk dat we weinig zouden hebben aan sporen  die
  430. doodliepen  op  open  terminalservers.  De logische stap was
  431. dan ook om connecties vanuit  dat  soort  systemen  te  gaan
  432. weigeren,  zodat  de  kraker  alleen nog kon opereren vanuit
  433. usercodes op reguliere computersystemen. De hoop was dat  de
  434. kraker  meer  sporen  zou achterlaten, zodat we wat meer van
  435. hem te weten zouden komen.
  436.  
  437. Aldus werd een eerste versie van access control  in  de  tcp
  438. wrapper  ingebouwd. Telkens wanneer een terminalserver in de
  439. logfiles opdook werd die onmiddelijk aan onze  kant  geblok-
  440. keerd,  en  werd  de  beheerders van die terminalservers ge-
  441. vraagd hetzelfde aan hun kant te doen. Met dat laatste  had-
  442. den we overigens lang niet altijd succes. Figuur 6 geeft een
  443. idee hoe onze access control files er op een bepaald  moment
  444. uitzagen.
  445.  
  446. 7.  Een koekje van eigen deeg: de kraker bespioneerd.
  447.  
  448. Nu we de kraker de mogelijkheid hadden ontnomen om  ons  aan
  449. te  vallen  vanuit  terminalservers,  bleef  voor  hem niets
  450. anders over dan om  direct  vanuit  gekraakte  usercodes  te
  451. opereren. Het leek dan ook nuttig om te proberen uit te vin-
  452. den welke usercodes hij daarvoor gebruikte.
  453.  
  454. Ik draaide snel iets in elkaar  dat  bij  connecties  vanuit
  455. "verdachte"  systemen een finger en systat naar die systemen
  456. terugdeed.  Na alle gespioneer door de kraker zouden we  hem
  457.  
  458.  
  459.  
  460.                        April 24, 1992
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                            - 8 -
  467.  
  468.  
  469.  
  470.  
  471.      /etc/hosts.allow:
  472.  
  473.          in.ftpd: ALL
  474.  
  475.      /etc/hosts.deny:
  476.  
  477.          ALL: terminus.lcs.mit.edu hilltop.rutgers.edu monk.rutgers.edu
  478.          ALL: comserv.princeton.edu lewis-sri-gw.army.mil
  479.          ALL: ruut.cc.ruu.nl 131.211.112.44
  480.          ALL: tip-gsbi.stanford.edu
  481.          ALL: tip-quada.stanford.edu
  482.          ALL: s101-x25.stanford.edu
  483.          ALL: tip-cdr.stanford.edu
  484.          ALL: tip-cromemaa.stanford.edu
  485.          ALL: tip-cromembb.stanford.edu
  486.          ALL: tip-forsythe.stanford.edu
  487.  
  488.      Figuur 6.   Voorbeeld  van  access  control  files.  De
  489.      eerste  file  beschrijft welke service/host combinaties
  490.      altijd zijn toegestaan.  In dit  voorbeeld  worden  ftp
  491.      connecties  altijd  geaccepteerd,  ongeacht de herkomst
  492.      van de verbinding.
  493.  
  494.      De tweede file beschrijft welke resterende service/host
  495.      combinaties  worden geweigerd.  In dit voorbeeld worden
  496.      services geweigerd aan een reeks open  terminalservers,
  497.      ongeacht het type van de gevraagde service.
  498.  
  499. dus eindelijk eens een koekje van eigen deeg kunnen geven.
  500.  
  501. In de loop van de tijd identificeerde ik  met  mijn  reverse
  502. fingers  diverse  usercodes waarop de kraker had ingebroken.
  503. Uiteraard stelde ik steeds de beheerders op  de  hoogte  van
  504. het probleem. Een copietje ging dan steeds naar CERT1, zodat
  505. zij op de hoogte bleven van de vorderingen.  Het was natuur-
  506. lijk zaaks om vooral nooit  mail  te  sturen  naar  het  het
  507. gekraakte  systeem  zelf, aangezien de kans groot was dat de
  508. kraker het dan onder ogen zou krijgen.
  509.  
  510. Uit de voorbeelden in figuren 7 en 8 blijkt dat de kraker op
  511. het systeem guzzle.Stanford.EDU was ingelogd als adrian. Hij
  512. kwam vanaf tip-forsythe.Stanford.EDU, een terminalserver die
  513. aan  een  modem bank is gekoppeld. Op het eerste gezicht was
  514. dit resultaat dus weinig  hoopgevend,  maar  de  afloop  was
  515. bepaald anders.
  516.  
  517. _________________________
  518.  
  519. 1.   Computer Emergency Response Team, een  organisatie  die
  520.      in  het leven is geroepen na het incident met de inter-
  521.      net worm, november 1988.
  522.  
  523.  
  524.  
  525.  
  526.                        April 24, 1992
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                            - 9 -
  533.  
  534.  
  535.  
  536.  
  537.      Jan 30 04:55:09 tuegate: telnetd: connect from guzzle.Stanford.EDU
  538.      Jan 30 05:10:02 svin01:  fingerd: connect from guzzle.Stanford.EDU
  539.      Jan 30 05:17:57 svin01:  fingerd: connect from guzzle.Stanford.EDU
  540.      Jan 30 05:18:24 svin01:  fingerd: connect from guzzle.Stanford.EDU
  541.      Jan 30 05:18:34 svin01:  fingerd: connect from guzzle.Stanford.EDU
  542.      Jan 30 05:18:38 svin01:  fingerd: connect from guzzle.Stanford.EDU
  543.      Jan 30 05:18:44 svin01:  fingerd: connect from guzzle.Stanford.EDU
  544.      Jan 30 05:21:03 svin01:  fingerd: connect from guzzle.Stanford.EDU
  545.      Jan 30 05:24:46 tuegate: systatd: connect from guzzle.Stanford.EDU
  546.      Jan 30 05:27:20 svin01:  fingerd: connect from gloworm.Stanford.EDU
  547.      Jan 30 05:33:33 svin01:  telnetd: connect from guzzle.Stanford.EDU
  548.      Jan 30 05:33:38 svin01:  telnetd: connect from guzzle.Stanford.EDU
  549.      Jan 30 05:33:41 svin01:  telnetd: connect from guzzle.Stanford.EDU
  550.      Jan 30 05:33:50 svin01:  ftpd:    connect from guzzle.Stanford.EDU
  551.      Jan 30 05:33:58 svin01:  fingerd: connect from math.uchicago.edu
  552.      Jan 30 05:34:08 svin01:  fingerd: connect from math.uchicago.edu
  553.      Jan 30 05:34:54 svin01:  fingerd: connect from math.uchicago.edu
  554.      Jan 30 05:35:16 svin01:  fingerd: connect from guzzle.Stanford.EDU
  555.      Jan 30 05:35:36 svin01:  fingerd: connect from guzzle.Stanford.EDU
  556.  
  557.      Figuur 7.  Een  burst  netwerkactiviteit,  vrijwel  al-
  558.      lemaal vanuit Stanford.
  559.  
  560.  
  561.      Wed Jan 30 05:10:08 MET 1991
  562.  
  563.      [guzzle.stanford.edu]
  564.      Login name: adrian                      In real life: Adrian Cooper
  565.      Directory: /u0/adrian                   Shell: /phys/bin/tcsh
  566.      On since Jan 29 19:30:18 on ttyp0 from tip-forsythe.Sta
  567.      No Plan.
  568.  
  569.      Figuur 8.  Een reverse finger resultaat  behorende  bij
  570.      een  van de bovenstaande connecties. Er was slechts een
  571.      gebruiker ingelogd, dus we hadden een schot in de roos.
  572.  
  573. In dit geval verwees CERT mij door naar Stephen Hansen.  Hij
  574. logde  al  enige  tijd  alle  sessies  van adrian. De kraker
  575. voelde zich kennelijk thuis in Stanford, want hij heeft  van
  576. daaruit gedurende enige maanden lang diverse andere systemen
  577. aangevallen. Ik heb alle logs van Stanford  bekeken,  en  ze
  578. geven een uitstekend inzicht in hoe de kraker te werk ging.
  579.  
  580. o    De kraker was uitstekend op de hoogte van bugs in  sys-
  581.      teemsoftware.  Gelukkig kende hij ze niet allemaal.
  582.  
  583. o    Hij  controleerde  uiterst  zorgvuldig  alle  file-  en
  584.      directoryprotecties   op   mogelijke  zwakheden  in  de
  585.      beveiliging.
  586.  
  587. o    Als hij een  systeem  wist  binnen  te  komen  was  dat
  588.      vrijwel  altijd  omdat  gebruikers  zwakke wachtwoorden
  589.  
  590.  
  591.  
  592.                        April 24, 1992
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                            - 10 -
  599.  
  600.  
  601.      gebruikten. Door maar genoeg systemen te proberen  kwam
  602.      hij altijd wel ergens binnen.
  603.  
  604. Met zijn kennis en geduld wist de kraker in de meeste geval-
  605. len superuser privileges te verkrijgen.
  606.  
  607. Op Stanford wist de kraker diverse malen bijna superuser  te
  608. worden. Op zulke momenten was er dan altijd, heel toevallig,
  609. een storing in een disk of iets dergelijks,  zodat  hij  het
  610. karwei nooit heeft kunnen afmaken.
  611.  
  612. Een van de systemen die de  kraker  vanuit  Stanford  op  de
  613. korrel  nam  was  research.att.com,  een gateway van de AT&T
  614. Bell laboratories.  Die  activiteiten  bleven  bepaald  niet
  615. onopgemerkt.   De  mensen  van  AT&T  vonden  het  zelfs wel
  616. interessant en installeerden een  complete  namaak  omgeving
  617. waarin  ze de kraker zijn gang lieten gaan. Ondertussen werd
  618. hij uitvoerig bespioneerd.  Een en ander is beschreven  door
  619. Bill  Cheswick  in een artikel genaamd "An evening with Ber-
  620. ferd", hetgeen onlangs werd gepresenteerd op een bijeenkomst
  621. van  de  Amerikaanse  USENIX  vereniging van UNIX gebruikers
  622. [1].
  623.  
  624. De kraker is overigens nooit gearresteerd.  Hij  was  gewoon
  625. een  jaar  te vroeg met zijn activiteiten. Het is jammer dat
  626. in plaats van dit destructieve  individu  twee  veel  minder
  627. schadelijke "data reizigers" de twijfelachtige eer hadden om
  628. als eerste Nederlandse hackers te worden gearresteerd.
  629.  
  630. 8.  Booby traps.
  631.  
  632. Tot nu toe had ik onze network daemons  geinstrumenteerd  om
  633. netwerk   connecties  te  rapporteren,  waarna  ik  zelf  de
  634. interessante informatie moest selecteren. Daarbij maakte  ik
  635. weliswaar gebruik van uiterst complexe pattern matching pro-
  636. cedures, maar de uiteindelijke beoordeling of een systeem al
  637. dan  niet  moest  worden opgenomen in de lijst van verdachte
  638. systemen bleef toch een handmatig proces.
  639.  
  640. Wat ik  eigenlijk  wilde  was  een  soort  "boobytrap",  een
  641. apparaat  dat  automatisch alarm zou slaan in geval van ver-
  642. dachte activiteit, en dat bij normaal gebruik niets van zich
  643. zou  laten  horen.  Hiervoor kon ik de gewone telnet en der-
  644. gelijke services niet gebruiken.
  645.  
  646. Een geschikte netwerkservice bleek de trivial file  transfer
  647. (tftp)  service.  Dit  protocol  vereist geen wachtwoord, en
  648. wordt voornamelijk gebruikt tijdens het booten van een disk-
  649. loos  werkstation,  een X terminal, of van dedicated netwerk
  650. hardware, om de systeem software  over  het  netwerk  in  te
  651. laden.
  652.  
  653. Tot voor een paar jaar was tftp een security probleem  omdat
  654. je  daarmee iedere file op het systeem kon lezen, dus ook de
  655.  
  656.  
  657.  
  658.                        April 24, 1992
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                            - 11 -
  665.  
  666.  
  667. UNIX password file.  De wachtwoorden  worden  weliswaar  met
  668. een  gemuteerd DES algoritme versleuteld, maar het algoritme
  669. is niet geheim, en met een goede woordenlijst en een  slimme
  670. password  kraker kun je gemakkelijk zwakke wachtwoorden vin-
  671. den.  Gelukkig voorzien de meeste huidige  tftp  implementa-
  672. ties in een restrictie op welke files toegankelijk zijn.  Er
  673. zijn echter nog heel wat systemen  die  verouderde  software
  674. draaien.
  675.  
  676. In de loop van de tijd had ik  al  diverse  tftp  connecties
  677. gezien  vanaf systemen die niets met de TUE hadden te maken.
  678. Ook in dit geval leek het me nuttiger om de service niet  af
  679. te  sluiten,  maar  om de reverse finger faciliteit op niet-
  680. locale tftp connecties toe te passen.
  681.  
  682.  
  683.      /etc/hosts.allow:
  684.  
  685.          in.tftpd: LOCAL
  686.  
  687.      /etc/hosts.deny:
  688.  
  689.          in.tftpd: ALL: /usr/ucb/finger -l @%h 2>&1 | /usr/ucb/mail wswietse
  690.  
  691.      Figuur 9.  Entries  in  de  aangepaste  access  control
  692.      files om de tftp service van een boobytrap te voorzien.
  693.      De eerste file legt vast dat tftp connecties vanaf  lo-
  694.      cale systemen altijd zijn toegestaan.
  695.  
  696.      De tweede access control file bepaalt dat alle  overige
  697.      tftp  connecties altijd worden geweigerd. Het resultaat
  698.      van een reverse finger wordt mij per email toegestuurd.
  699.      In het bovenstaande commando wordt %h vervangen door de
  700.      naam van de remote host.
  701.  
  702.  
  703. Daartoe was een kleine  aanpassing  in  de  de  tcp  wrapper
  704. nodig.  Tot  nog  toe werkte mijn reverse finger code immers
  705. uitsluitend op basis van "verdachte" hostnamen.  Nu moest er
  706. ook  naar  de  naam  van  de service worden gekeken, want ik
  707. wilde  niet  voor  elke  interlocale  netwerkverbinding  een
  708. reverse finger doen.
  709.  
  710. Ongeveer elke twee maanden loopt er wel iemand in  de  fuik.
  711. In  zo'n  geval  stuur ik een mailtje naar de contactpersoon
  712. van de betreffende organisatie  (nooit  naar  het  gekraakte
  713. systeem zelf) plus een copietje naar CERT.
  714.  
  715. Het volgende is een voorbeeld van een verdachte tftp connec-
  716. tie:
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.                        April 24, 1992
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                            - 12 -
  731.  
  732.  
  733.  
  734.         Jan  4 18:58:28 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  735.         Jan  4 18:59:45 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  736.         Jan  4 19:01:02 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  737.         Jan  4 19:02:19 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  738.         Jan  4 19:03:36 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  739.         Jan  4 19:04:53 svin02 tftpd: refused connect from E40-008-8.MIT.EDU
  740.  
  741.  
  742. Aangezien tftp is gebaseerd op een datagram protocol zien we
  743. elke  17  seconden een herhaling van het geweigerde request.
  744. De precieze lengte van het retry interval  is  implementatie
  745. afhankelijk.
  746.  
  747. Ook in dit geval lieten de reverse finger  resultaten  niets
  748. te raden over:
  749.  
  750.         Login       Name              TTY Idle    When            Office
  751.         mvscott  Mark V Scott          p0      Sat 12:46  14S-134       x3-6724
  752.         aparkin  Adam P Arkin          p2   15 Sat 12:38  56-207       253-6517
  753.         cuomo    Kevin M Cuomo         p3   24 Sat 12:10  LIN-KB-157   181-0772
  754.         mwsmith  Merrill W Smith       p6   13 Sat 11:33  7-238         x8-5596
  755.         vastettn Victoria A Stettner   r0  18d Mon 14:51  E53-231       x3-2722
  756.  
  757.  
  758. Er was maar een gebruiker die in aanmerking  kwam:  mvscott.
  759. Alle  anderen  hadden gedurende een kwartier of langer niets
  760. gedaan.  Blijkens de gedetailleerde  finger  resultaten  was
  761. ingebroken vanuit cnam.cnam.fr, een systeem in Frankrijk.
  762.  
  763.         Login name: mvscott                     In real life: Mark V Scott
  764.         Office: 14S-134,  x3-6724
  765.         Directory: /mit/mvscott                 Shell: /bin/csh
  766.         On since Jan  4 12:46:44 on ttyp0 from cnam.cnam.fr
  767.         12 seconds Idle Time
  768.         No Plan.
  769.  
  770.  
  771. Uit de reactie van de mensen in Frankrijk bleek het te  gaan
  772. om  iemand  die  bij hun was ingebroken vanuit een terminal-
  773. server bij NASA:
  774.  
  775.         hyper1    ttyp3    sdcds8.gsfc.nasa Sat Jan  4 17:51 - 20:47  (02:55)
  776.  
  777.  
  778. (de volledige hostnaam is sdcds8.gsfc.nasa.gov).  Al met  al
  779. werd  er driemaal over de Atlantische oceaan gegaan:  vanuit
  780. een onbekende plaats, via een terminalserver bij  NASA,  via
  781. een  systeem in Frankrijk, via een systeem bij het MIT, naar
  782. onze systemen.
  783.  
  784. 9.  Conclusies.
  785.  
  786. De tcp wrapper is een  nuttig  gereedschap  gebleken  om  de
  787.  
  788.  
  789.  
  790.                        April 24, 1992
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                            - 13 -
  797.  
  798.  
  799. toegang  via  netwerken te bewaken. Verscheidene versies van
  800. het programma zijn via het  internet  verspreid.   Het  pro-
  801. gramma  mag  zich in een behoorlijke populariteit verheugen.
  802. Het wordt vrijwel dagelijks van onze  ftp  server  opgehaald
  803. naar alle delen van de wereld.  Daarnaast wordt het beschik-
  804. baar gesteld door organisaties zoals CERT, die het  in  haar
  805. lijst van aanbevolen software heeft opgenomen.
  806.  
  807. o    Het vereist geen enkele wijziging van  reeds  bestaande
  808.      systeemsoftware  of  configuratiefiles.   Men hoeft dus
  809.      geen guru te zijn om het te kunnen installeren.
  810.  
  811. o    Met de meeste  UNIX  varianten  kan  het  zonder  enige
  812.      wijziging  worden  geinstalleerd.  UNIX systemen vormen
  813.      veruit de meerderheid van de op het internet  aangeslo-
  814.      ten systemen.
  815.  
  816. o    Het belemmert legale gebruikers niet  bij  het  gebruik
  817.      van computer systemen.
  818.  
  819. o    Het doet niet mee bij het afhandelen van de  eigenlijke
  820.      netwerkservice, dus de kans op bugs is uiterst klein.
  821.  
  822. o    Het kan worden  gebruikt  voor  zowel  TCP  (connection
  823.      oriented)  als  UDP  (datagram oriented) services, voor
  824.      zover die door een centraal proces zoals de inetd  wor-
  825.      den opgestart.
  826.  
  827. o    Het biedt bescherming  tegen  zogenaamde  "name  server
  828.      spoofing",  waarbij  een systeem de naam van een andere
  829.      host  probeert  aan  te  nemen.   Deze  beveiliging  is
  830.      belangrijk  voor  netwerkservices  zoals  rsh en rlogin
  831.      omdat die gebruik maken van authenticatie op basis  van
  832.      hostnaam.  Wanneer  een hostnaam niet blijkt te kloppen
  833.      wordt de verbinding domweg verbroken.
  834.  
  835. o    De optionele access control faciliteit kan nuttig  zijn
  836.      om  al te open systemen af te schermen. Iets dergelijks
  837.      kan ook met netwerk routers worden  gerealiseerd,  maar
  838.      dat  kan  vertragend  werken  op  het  overige  netwerk
  839.      verkeer. Bovendien maken  routers  zelden  melding  van
  840.      ongewenste verbindingen.
  841.  
  842. o    De mogelijkheid tot het opzetten  van  "boobytraps"  op
  843.      bepaalde  netwerk services zoals tftp, of op connecties
  844.      vanuit verdachte systemen, bleek nuttig  om  tijdig  te
  845.      worden gewaarschuwd voor verdachte activiteit.
  846.  
  847. De tcp wrapper is slechts een van de voorzieningen die ik op
  848. onze  systemen heb aangebracht. Al met al beschikken we over
  849. een redelijk effectief instrumentarium om krakers te  detec-
  850. teren  en  om ze in de gaten te houden.  Het is dan ook niet
  851. verwonderlijk dat de TUE in  krakerskringen  de  naam  heeft
  852. redelijk beveiligd te zijn.
  853.  
  854.  
  855.  
  856.                        April 24, 1992
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                            - 14 -
  863.  
  864.  
  865. 10.  Referenties.
  866.  
  867. [1]  Cheswick, W.R. An Evening  with  Berferd,  in  Which  a
  868.      Cracker is Lured, Endured, and Studied.  Proceedings of
  869.      the Winter USENIX Conference, (San Francisco),  January
  870.      1992.  Tevens beschikbaar voor anonymous ftp op:
  871.      research.att.com: /dist/berferd.ps.
  872.  
  873. [2]  De tcp wrapper source is verspreid via de  USENET  news
  874.      groep   comp.sources.misc   en   is   beschikbaar  voor
  875.      anonymous ftp op:
  876.      cert.sei.cmu.edu: /pub/network_tools/tcp_wrapper.shar,
  877.      ftp.win.tue.nl: /pub/security/log_tcp.shar.Z.
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.                        April 24, 1992
  923.  
  924.  
  925.